Soft errors may occur in integrated circuits (ICs) when radioactive atoms decay and release alpha particles into an IC. Because an alpha particle contains a positive charge and kinetic energy, the alpha particle can hit a memory cell and cause the cell to change from one logical state to the other logical state. For example, when an alpha particle strikes a memory cell, the strike may cause the memory cell to change or “flip” from a logical “one” to a logical “zero.” Usually the alpha particle strike does not damage the actual structure of an IC.
A common source of soft errors is alpha particles which may be emitted by trace amounts of radioactive isotopes present in packing materials of integrated circuits. “Bump” material used in flip-chip packaging techniques has also been identified as a possible source of alpha particles.
Other sources of soft errors include high-energy cosmic rays and solar particles. High-energy cosmic rays and solar particles react with the upper atmosphere generating high-energy protons and neutrons that shower to the earth. Neutrons can be particularly troublesome as they can penetrate most man-made construction (a neutron can easily pass through five feet of concrete). Soft errors may also be caused by manufacturing defects. For example, if a defect causes enough leakage on a floating gate of a flash memory cell, the flash memory cell may flip.
Soft errors are becoming one of the main contributors to failure rates in microprocessors and other complex ICs. Several approaches have been suggested to reduce this type of failure. Adding ECC (Error Correction Code) or parity in blocks of memory may reduce this type of failure.
One limitation of flash memory is that although it can be read or programmed a byte (a byte contains 8 bits) or a word at a time in a random access fashion, it must be erased a block of data (e.g. 256K bytes of data) at a time. When a block of data is erased in a flash memory, typically all bits in the block of data are set to a logical one. Any location within an initially erased block of data may be programmed. However, once a bit in the block of data has been written to a logical zero, only by erasing the entire block of data can the bit be changed back to a logical one.
In other words, flash memory offers random access read and programming operations, but cannot offer arbitrary random access rewrite or erase operations. A location may, however, be rewritten as long as the change in the logical value of any bit is from a logical one to a logical zero. For example, a nibble value (i.e. 4 bits) may be erased to a logical value 1111, and then written to a logical value 1110. Successive writes to that nibble can change it to a logical value 1010, then a logical value 0010, and finally a logical value 0000.
In practice few algorithms take advantage of this successive write capability and in general the entire block of data is erased and rewritten at once. Typically the time required to erase a block of data and rewrite it is greater than the time required to read or rewrite bytes of data in a block of data. As a result, the performance of a flash memory may be improved by reducing the number of times a block of data is erased in a flash memory.